Computer-based control systems are used in a wide variety of situations. For example, modern measurement instruments are often constructed using general purpose computers to control various input, output, and computational modules that collect, process and display the relevant information to a user. The interface between the user and the instrument is typically some form of graphical user interface that displays the data and allows the user to input commands via a keyboard and/or pointing device that specify the inputs and desired outputs.
In some “synthetic” instruments, the instrument includes physical parts that are connected to a controlling data processing system via networks that can include the Internet and wireless links. The actual control program could be running on a conventional data processing system at some remote location or on any of a variety of handheld devices such as smart phones, tablets, etc. Each device has different display limitations that are imposed by the computational capacity of the device and the size of its display screen. Hence, the task of providing a graphical user interface for each possible controlling device presents significant challenges.
Graphical user interfaces (GUIs) for controlling computer programs, real-world mechanical or electrical systems, or instruments are typically created using a commercially supplied programming environment. The programming environment provides a list of available components, and the programmer selects components from this list and arranges the components in question on a form to define the layout of the graphical user interface. The user then writes code that specifies the interactions of the components and the source of input data to the program. Finally, the program is compiled to an executable that is loaded onto the host computer. Once the executable is created, changes to the graphical user interface that have not been anticipated by the program developer must typically be made by returning to the programming environment, making the changes in the source code and layout files, and then recompiling the program.
A new user interface is typically created by starting from scratch using the programming environment or by copying the source code from a previous design and modifying the code for the new application. This process is tedious, time consuming, and error prone. In addition, the process requires a programmer who is trained both in the programming environment and the relevant computer languages. The end user of the instrument or program typically lacks such skills. Hence, the user of the graphical user interface must typically collaborate with a programmer if the user wishes to create a new graphical user interface. In addition, there is a significant lag time between the conceptualization of a new graphical user interface and its implementation in the form that the end user can utilize. Hence there is resistance to creating new graphical user interfaces or modifying existing graphical user interfaces.